在昨天的 Day 28 中,我們完成了資安與權限控管,確保了 API Key 的安全以及敏感數據的脫敏保護。然而,如果我們的 n8n 自動化流程只是執行在 local 環境(如本機電腦),一旦電腦關機、網路斷線或休眠,所有的 Webhook 觸發器、Cron 定時巡檢與 Telegram / LINE 機器人就會瞬間失靈!
今天我們要將這套 AI 待辦系統正式「推向生產環境(Production)」!透過 Docker Composer 進行多容器化部署、使用 Nginx / Let's Encrypt 配置 SSL 安全憑證與反向代理,並導入 Uptime Kuma 進行 7x24 小時的全天候服務監控與異常警報,確保系統穩定運行不中斷!
http://localhost:5678 無法直接於生產環境運作。在 VPS 伺服器上建立 docker-compose.yml 檔案,將 n8n 與 PostgreSQL 資料庫獨立容器化:
version: '3.8'
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=your_secure_db_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=your_secure_db_password
- N8N_HOST=n8n.yourdomain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.yourdomain.com/
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
volumes:
postgres_data:
n8n_data:
n8n.yourdomain.com)配置 HTTPS 通訊。server {
server_name n8n.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
在 VPS 啟動另一個輕量級監控容器 Uptime Kuma。
新增監控探針(Monitor):
Monitor Type:HTTP(s)
URL:[https://n8n.yourdomain.com/healthz](https://n8n.yourdomain.com/healthz)(n8n 內建的健康檢查 API 端點)
Heartbeat Interval:每 60 秒 探測一次。
配置警報頻道 (Notification):將 Uptime Kuma 綁定至管理員的 Telegram Bot。當 n8n 服務無回應超過 2 分鐘,Uptime Kuma 會發送紅燈警報!
docker compose up -d 啟動所有容器。[https://n8n.yourdomain.com](https://n8n.yourdomain.com),確認 SSL 鎖頭圖示正常顯示。docker stop n8n_container_1 故意模擬崩潰,確認 Uptime Kuma 於 2 分鐘內於 Telegram 跳出 🚨 服務中斷通知,且 Docker 自動重啟(restart: always)後服務成功復原!今天我們成功把原本只能跑在 local 的實照專案,升級成了 Production 等級的 7x24 雲端自動化架構。明天「Day 30」我們將迎來 2026 鐵人賽的最終完結篇——「全系列終極成果發表、系統架構總複習與未來 AI 生態系擴充藍圖」!